取得Deadline與1970/01/01的時間差
const futureTime = futureDate.getTime();
Date.getTime()
可以計算該Date物件離1970/01/01的毫秒數新增getRemaindingTime()
函數
function getRemaindingTime() {
//內容...
}
getRemaindingTime()
函數內取得當前時間與1970/01/01的時間差
const today = new Date().getTime();
計算當前時間與Deadline的時間差
const t = futureTime - today;
計算一天、一小時與一分鐘的毫秒數
const oneDay = 24 * 60 * 60 * 1000;
const oneHour = 60 * 60 * 1000;
const oneMinute = 60 * 1000;
將時間毫秒差轉換成天數、小時數、分鐘數與秒數
let days = Math.floor(t / oneDay); //計算天數
let hours = Math.floor((t % oneDay) / oneHour); //計算小時數
let minutes = Math.floor((t % oneHour) / oneMinute); //分鐘數
let seconds = Math.floor((t % oneMinute) / 1000); //秒數
將以上記錄存進value
陣列中
const values = [days, hours, minutes, seconds];
新增format()
函數 : 將value
中只有個位數的元素補0
function format(item) {
if (item < 10) {
return (item = `0${item}`);
}
return item;
};
將value
中的數值丟進個別時間單位DIV中
items.forEach(function (item, index) {
item.innerHTML = format(values[index]);
});
(回到最外層)新增重複執行的函數
let countdown = setInterval(getRemaindingTime, 1000);
setInterval(func, [delay])
用法 :
func
: 被執行的函式[delay]
: 延遲的時間(毫秒數)setTimeout()
的功能也相當類似。但setInterval()
會重複執行;而setTimeout()
只會執行一次將下列程式碼加進getRemaindingTime()
中,設定當倒數時間歸零後顯示的文字
if (t < 0) {
clearInterval(countdown); //結束countdown
deadline.innerHTML = `<h4 class="expired">sorry, this giveaway has expired!</h4>`;
}
clearInterval
可以用來取消setInterval()